home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / amiga / plotting / gnuplot3.lzh / gnuplot / docs / doc2gih.c < prev    next >
C/C++ Source or Header  |  1991-07-11  |  2KB  |  99 lines

  1. /*
  2.  * doc2gih.c  -- program to convert Gnuplot .DOC format to gnuplot
  3.  * interactive help (.GIH) format.
  4.  *
  5.  * This involves stripping all lines with a leading digit or
  6.  * a leading @, #, or %.
  7.  * Modified by Russell Lang from hlp2ms.c by Thomas Williams 
  8.  *
  9.  * usage:  doc2gih < file.doc > file.gih
  10.  *
  11.  * Original version by David Kotz used the following one line script!
  12.  * sed '/^[0-9@#%]/d' file.doc > file.gih
  13.  */
  14.  
  15. #include <stdio.h>
  16. #include <ctype.h>
  17.  
  18. #define MAX_LINE_LEN    256
  19. #define TRUE 1
  20. #define FALSE 0
  21.  
  22. main(argc,argv)
  23. int argc;
  24. char **argv;
  25. {
  26. FILE * infile;
  27. FILE * outfile;
  28.     infile = stdin;
  29.     outfile = stdout;
  30.     if (argc > 3) {
  31.         fprintf(stderr,"Usage: %s infile outfile\n", argv[0]);
  32.         exit(1);
  33.     }
  34.     if (argc >= 2) 
  35.         if ( (infile = fopen(argv[1],"r")) == (FILE *)NULL) {
  36.             fprintf(stderr,"%s: Can't open %s for reading\n",
  37.                 argv[0], argv[1]);
  38.             exit(1);
  39.         }
  40.     if (argc == 3)
  41.         if ( (outfile = fopen(argv[2],"w")) == (FILE *)NULL) {
  42.             fprintf(stderr,"%s: Can't open %s for writing\n",
  43.                 argv[0], argv[2]);
  44.         }
  45.     
  46.     convert(infile,outfile);
  47.     exit(0);
  48. }
  49.  
  50.  
  51. convert(a,b)
  52.     FILE *a,*b;
  53. {
  54.     static char line[MAX_LINE_LEN];
  55.  
  56.     while (fgets(line,MAX_LINE_LEN,a)) {
  57.        process_line(line, b);
  58.     }
  59. }
  60.  
  61. process_line(line, b)
  62.     char *line;
  63.     FILE *b;
  64. {
  65.     static int line_count = 0;
  66.  
  67.     line_count++;
  68.  
  69.     switch(line[0]) {        /* control character */
  70.        case '?': {            /* interactive help entry */
  71.           (void) fputs(line,b); 
  72.           break;        
  73.        }
  74.        case '@': {            /* start/end table */
  75.           break;            /* ignore */
  76.        }
  77.        case '#': {            /* latex table entry */
  78.           break;            /* ignore */
  79.        }
  80.        case '%': {            /* troff table entry */
  81.           break;            /* ignore */
  82.        }
  83.        case '\n':            /* empty text line */
  84.        case ' ': {            /* normal text line */
  85.           (void) fputs(line,b); 
  86.           break;
  87.        }
  88.        default: {
  89.           if (isdigit(line[0])) { /* start of section */
  90.                   /* ignore */
  91.           } else
  92.             fprintf(stderr, "unknown control code '%c' in column 1, line %d\n",
  93.                 line[0], line_count);
  94.           break;
  95.        }
  96.     }
  97. }
  98.  
  99.